#pragma once

#include <stdint.h>
#include <string>
#include <memory>

namespace log
{

class LogLevel
{
public:
    using ptr = std::shared_ptr<LogLevel>;

    enum class ELevel: uint8_t 
    {
        TRACE,
        DEBUG,
        INFO,
        WARN,
        ERROR,
    };

    static std::string toString(LogLevel::ELevel eLevel);
    static LogLevel::ELevel fromString(const std::string& str);

};

std::ostream& operator<<(std::ostream& os, log::LogLevel::ELevel eLevel);
    
} // namespace log
